package br.com.ctm.advogadope.negocio.impl;

import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.ejb.Schedule;
import javax.ejb.Singleton;
import javax.ejb.Startup;

import org.apache.log4j.Logger;

import br.com.ctm.advogadope.model.Processo;
import br.com.ctm.advogadope.negocio.api.ProcessoNegocio;
import br.com.framework.negocio.exception.NegocioException;

@Singleton
@Startup
public class ProcessoUpdater {
	
	private static final Logger LOGGER = Logger.getLogger(ProcessoUpdater.class);
	
	public static final int INTERVALO_ATUALIZACAO = 60000 * 60;

	@EJB
	private ProcessoNegocio processoNegocio;

	public ProcessoUpdater() {
		// TODO Auto-generated constructor stub
	}
	
	@Schedule(hour = "*/12")
	public void verificaAtualizacoes() {
		LOGGER.debug("Verificando atualizacoes de processos...");
		List<Processo> list = new ArrayList<Processo>();
		try {
			list = processoNegocio.findByDtAtualizacaoMaiorQueIntervalo(
					INTERVALO_ATUALIZACAO, -1, -1, true);
			LOGGER.debug(String.format("Existem %s processos a serem atualizados.", list.size()));
		} catch (Exception e) {
			LOGGER.error("Erro ao consultar processos", e);
		}
		for (Processo processo : list) {
			try {
				processoNegocio.buscarProcessoJudicial(processo.getId(), true, null);
			} catch (NegocioException e) {
				LOGGER.error("Nao foi possivel atualizar o processo: " + processo.getNpu(), e);
			}
		}
		LOGGER.debug("Finalizando atualizacao de processos.");
	}

}
